#include <bits/stdc++.h>
using namespace std;
using ll = long long;
typedef pair<ll, ll> p;
priority_queue<p> q;
const int N = 2e5 + 1;
ll i, v, u, w, n, m, a[N], mn[N], V[N];
vector<p> G[N];
int main() {
cin >> n >> m;
for (i = 0; i < m; ++i)
cin >> v >> u >> w, G[v].push_back({u, -w * 2}), G[u].push_back({v, -w * 2});
for (i = 1; i <= n; ++i) cin >> w, q.push({-w, i});
while (!q.empty()) {
auto [c, x] = q.top();
q.pop();
if (V[x]) continue;
mn[x] = c, V[x] = 1;
for (auto &[y, d]: G[x]) q.push({c + d, y});
}
for (i = 1; i <= n; ++i) cout << -mn[i] << ' ';
cout << '\n';
}
/* Sat Feb 18 2023 18:46:58 GMT+0300 (Moscow Standard Time) */
1535A - Fair Playoff | 1538F - Interesting Function |
1920. Build Array from Permutation | 494. Target Sum |
797. All Paths From Source to Target | 1547B - Alphabetical Strings |
1550A - Find The Array | 118B - Present from Lena |
27A - Next Test | 785. Is Graph Bipartite |
90. Subsets II | 1560A - Dislike of Threes |
36. Valid Sudoku | 557. Reverse Words in a String III |
566. Reshape the Matrix | 167. Two Sum II - Input array is sorted |
387. First Unique Character in a String | 383. Ransom Note |
242. Valid Anagram | 141. Linked List Cycle |
21. Merge Two Sorted Lists | 203. Remove Linked List Elements |
733. Flood Fill | 206. Reverse Linked List |
83. Remove Duplicates from Sorted List | 116. Populating Next Right Pointers in Each Node |
145. Binary Tree Postorder Traversal | 94. Binary Tree Inorder Traversal |
101. Symmetric Tree | 77. Combinations |